<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>InfinityJEEEU Java Code Generator</title>
        <link href="../css/default.css" rel="stylesheet" type="text/css" />
        <script type="text/javascript" src="../js/jquery-1.11.1.min.js"></script>
    </head>   
    <body>
        <div id="wrapper">
        <div id="header_wide">
    <div id="logo">
        <h1><a href="../html/index.html">无垠式Java通用代码生成器</a></h1>
        <h2><a href="../html/index.html">自2014年起为公众服务</a></h2>
    </div>
    <!-- end div#logo -->
    <!-- end div#menu -->
	</div>
            <!-- end div#header -->
            <div id="page_wide">
                <div id="content_wide">
	<h3>代码生成器技术乱弹六，编译器在拈花微笑</h3>
	<p>到底什么是代码生成器，如何驱动代码生成器？这个问题不能一概而论，各家的做法也很不一致。有使用XML的，有使用JSON的，有使用SQL的，更多的，是采用图形界面操作的，定义数据对象，定义施加在这些操作对象上的各种操作，有时非常繁琐，有时非常易错。在我得到的唯一付费的代码生成器研发工作期间，我被授命开发一种"无码开发“的代码生成器。</p>

	<p>我的看法是，代码生成器是一种生成力很高，但是表现力受限的编译器。和大多数代码生成器一样。动词算子式代码生成器也是基于模板法的。但是如果您研究过这些代码生成器，您可以发现，它们是一种数据中心的代码生成器，不需要定义施加在数据即上的操作，只需要定义数据，也就是域对象，和域对象之间的关系，即可生成一个可以运作的系统。而且，不同的动词算子式代码生成器的架构很不相同，大概有近10种不同的架构。但是这些代码生成器支持的标准生成器脚本（SGS）却十分相似，在很多情况下，您只需要修改一下项目的technicalstack字段，比如从smeu改成jeeu。生成的代码就从Spring， Mybatis变成了html5，JDBC的了。</p>

	<p>为什么是这样？其实也很简单，这是编程的普遍规律。使用代码生成器的动机是什么，当然是省力。如何才能省力，当然是使用的工具高级。我有一比，在使用高级语言之前，程序员们使用的是汇编语言。工作量之艰巨叫现代人抓狂。据说，苏联人使用汇编语言编写了他们的巡洋舰的驱动代码110K，这是一个壮举，但也是成本高昂的。为啥汇编语言这么难写，易错，不易调试？我认为是其中的细节太多了，一种语言表现力越强，功能越强，其运用的难度，学习的难度，必然提高。就像一个雕塑家雕一座雕像，他必然是先用斧子，锤子等重工具把石头大致砍成基础的形状再使用刻刀的。在汇编语言时代，程序员就是面临着使用刻刀雕刻一尊雕像的烦恼。而代码生成器就是程序员的开山斧，是程序开发初期的利器。</p>

	<p>所以，代码生成器必须比高级语言生成力更高，否则，您为何要使用它呢？有没有办法？也很简单，约定优先于配置，简化关系的描述，最重要的，就是数据驱动，把程序对操作的描绘，尽可能省略掉。我对此的理解是，需要使用一种生产力比高级语言高10倍乃至于100倍的超级语言驱动代码生成器，代码生成器才有真正的意义。现在动词算子式代码生成器使用的是一种称为标准生成器脚本（SGS）的自定义语言，非常简略和高效，并有可以使用与此种语言等效的Excel模板来生成代码的选项。</p>

	<p>超级语言还是一种编程语言，还是跳不出编译器的五指山。所以，编译器在拈花微笑。 </p>
  </div>
                <!-- end div#content -->
                <div id="sidebar">
                    <!--ul-->
                    	<!-- Common Navigation Panel for our site -->
						<li id="submenu">
						    <h2>功能菜单</h2>
						    <ul>
						    　	<li><a href="../html/index.html">使用SGS生成代码</a></li>
						        <li><a href="../html/parseexcel.html">使用Excel生成代码</a></li>
						      	<li><a href="luantan_index.html">动词算子式代码生成器简介</a></li>
								<li><a href="luantan_1.html">代码生成器技术乱弹一，多对多关系与双域动词</a></li>
								<li><a href="luantan_2.html">代码生成器技术乱弹二，一对多关系的分析与实现</a></li>
								<li><a href="luantan_3.html">代码生成器技术乱弹三，所有字段搜索的主查询</a></li>
								<li><a href="luantan_4.html">代码生成器技术乱弹四，弹性万能界面</a></li>
								<li><a href="luantan_5.html">代码生成器技术乱弹五，动词算子浅析</a></li>
								<li><a href="luantan_6.html">代码生成器技术乱弹六，编译器在拈花微笑</a></li>
								<li><a href="luantan_7.html">代码生成器技术乱弹七，动词算子式代码生成器的透明性</a></li>
								<li><a href="luantan_8.html">代码生成器技术乱弹八，系统族与笛卡尔空间</a></li>
								<li><a href="luantan_9.html">代码生成器技术乱弹九，代码变变变，代码生成器之度量</a></li>
								<li><a href="luantan_10.html">代码生成器技术乱弹十，动词与多维空间，动词变格理论简述</a></li>
								<li><a href="luantan_11.html">代码生成器技术乱弹十一，伽罗华理论与代码生成器</a></li>
								<li><a href="luantan_12.html">代码生成器技术乱弹十二，步枪，T型车到代码生成器，模板法的工业魔术</a></li>

						    </ul>
						</li>
                    <!--/ul-->
                </div>
                <!-- end div#sidebar -->
                <div style="clear: both; height: 1px"></div>
            </div>
            <!-- Common footer for our site -->
			<div id="footer_wide">
			    <p id="legal">作者：火鸟  电邮:jerry_shen_sjf@qq.com QQ群:277689737<br/>
			    </p>
			</div>
        </div>
        <!-- end div#wrapper -->
</body>
</html>